package com.angus.activemq.queue;

import lombok.SneakyThrows;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException;

/**
 * Description :
 * Created by Angus on 2022/8/11 23:29
 */
public class JmsConsumer {

    public static final String ACTIVEMQ_URL = "tcp://192.168.220.110:61616";
    public static final String QUEUE_NAME = "queue01";

    public static void main(String[] args) throws JMSException, IOException {

        System.out.println("我是2号消费者");

        //创建连接工厂,按照给定的url地址，采用默认的用户名和密码
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
        //通过连接工厂，获得连接connection   +  启动
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();


        //创建会话session
        //两个参数  第一个  事物  第二个 参数
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //创建目的地（具体是队列的主题topic
        Destination queue = session.createQueue(QUEUE_NAME);



        //将产生的内容   创建消费者
        MessageConsumer messageConsumer = session.createConsumer(queue);

       /* while (true) {
            TextMessage textMessage = (TextMessage) messageConsumer.receive();

            if(null != textMessage) {
                System.out.println("&&&&&&&&消费者接收到消息： " + textMessage.getText());
            }else {
                break;
            }
        }
        messageConsumer.close();
        session.close();
        connection.close();*/

        //通过监听的方法来消费消息
        messageConsumer.setMessageListener(new MessageListener(){

            @SneakyThrows
            @Override
            public void onMessage(Message message) {
                if(null != message && message instanceof TextMessage) {
                    TextMessage textMessage = (TextMessage) message;
                    System.out.println("消费者收到消息： " + textMessage.getText());
                }
            }
        });
        //保证控制台不灭
        System.in.read();
        messageConsumer.close();
        session.close();
        connection.close();
    }

    /**
     * 1.先生产， 先启动一号消费者，在启动二号消费者    （一号可以消费，二号  不能消费
     *
     * 2.先启动两个消费者  ，再生产六条消息  ，消费情况如何？？  （  一人一半 （轮询
     */
}